package com.hd.determine.modules.alarm.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.hd.common.constant.BizConstant;
import com.hd.determine.modules.alarm.model.AlarmDetail;
import com.hd.determine.modules.alarm.model.AlarmRule;
import com.hd.determine.modules.vehicle.model.VehicleEndPos;
import org.springframework.scheduling.annotation.Async;

import java.util.List;

/**
 * <p>
 * 报警明细表 服务类
 * </p>
 *
 * @author chentl123
 * @since 2020-12-28
 */
public interface IAlarmDetailService extends IService<AlarmDetail> {

    /**
     * @return void
     * @author chentl
     * @description 生成或更新报警数据
     * @date 2021/1/6 5:13 下午
     * @params [data, alarmRule]
     */
    void generateAlarmData(VehicleEndPos data, AlarmRule alarmRule);

    /**
     * @return void
     * @author chentl
     * @description 结束指定类型报警
     * @date 2021/1/7 10:24 上午
     * @params [data, alarmTypeEnum]
     */
    void stopAlarm(VehicleEndPos data, BizConstant.AlarmType alarmTypeEnum);

    /**
     * @return void
     * @author chentl
     * @description 使用内置线程池调度插入任务
     * @date 2021/3/15 3:55 下午
     * @params [alarmDetail]
     */
    void multiInsert(AlarmDetail alarmDetail);

    /**
     * @return void
     * @author chentl
     * @description 使用内置线程池调度更新任务
     * @date 2021/3/15 3:55 下午
     * @params [alarmDetailList]
     */
    void multiUpdate(List<AlarmDetail> alarmDetailList);

    /**
    * @author chentl
    * @description 存在则插入否则跳过
    * @date 2021/3/16 10:52 上午
    * @params [alarmDetail]
    * @return void
    */
    void insertIfNotExists(AlarmDetail alarmDetail);
}
